Generate all sublists of a listΒΆ

Generate all sublists of a list.
def sub_lists(L):

       subL = [[]]

       for i in range(len(L)):
               n = i + 1
               while n <= len(L):
                       sub = L[i:n]
                       subL.append(sub)
                       n += 1

       return subL

# test
L1 = [10, 20, 30, 40]
L2 = ['X', 'Y', 'Z']

print(sub_lists(L1))
# [[], [10], [10, 20], [10, 20, 30], [10, 20, 30, 40], [20], [20, 30], [20, 30, 40], [30], [30, 40], [40]]

print(sub_lists(L2))
[[], ['X'], ['X', 'Y'], ['X', 'Y', 'Z'], ['Y'], ['Y', 'Z'], ['Z']]